export const validPassword = (rule, value, callback) => {
  var reg = /^(?=.*[a-zA-Z])(?=.*\d).{8,25}$/;
  if (value && !reg.test(value)) {
    callback(new Error('密码必须是字母、数字组合，可以加入特殊符号(!@#S%^&”)，8位或以上，25位以下'))
  } else {
    callback()
  }
}
// 验证ip地址
export const validIp = (rule, value, callback) => {
  let val = value
  let reg = /^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9]|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$/

  if (val && (!reg.test(val))) {
    callback(new Error('输入的IP地址不合法'))
  } else {
    callback()
  }
}
// 验证子网掩码
export const validMask = (rule, value, callback) => {
  // 检查子网掩码是否完整
  if (value.split('.').length !== 4) {
    return callback(new Error('输入的子网掩码不合法'));
  }
  // 将子网掩码转换成二进制形式
  let binaryMask = '';
  let parts = value.split('.');
  for (let i = 0; i < 4; i++) {
    let bin = parseInt(parts[i], 10).toString(2);
    // 补全每个部分为8位
    bin = '00000000'.substring(bin.length) + bin;
    binaryMask += bin;
  }

  // 判断是否为连续的"1"后面是"0"
  let index = binaryMask.indexOf('0');
  if (index !== -1) {
    let rest = binaryMask.substring(index);
    if (rest.indexOf('1') !== -1) {
      return callback(new Error('输入的子网掩码不合法'));
    }
  }
  return callback();
}

export const validMac = (rule, value, callback) => {
  if (value == '') {
    return callback();
  }
  // let reg1 = /^[A-Fa-f0-9]{1,2}-[A-Fa-f0-9]{1,2}-[A-Fa-f0-9]{1,2}-[A-Fa-f0-9]{1,2}-[A-Fa-f0-9]{1,2}-[A-Fa-f0-9]{1,2}$/
  let reg = /^[A-Fa-f0-9]{1,2}:[A-Fa-f0-9]{1,2}:[A-Fa-f0-9]{1,2}:[A-Fa-f0-9]{1,2}:[A-Fa-f0-9]{1,2}:[A-Fa-f0-9]{1,2}$/
  if (reg.test(value)) {
    return callback()
  } else {
    return callback(new Error('输入的MAC地址不合法'))
  }
}
// 验证端口
export const validPort = (rule, value, callback) => {
  let val1 = value + ''
  let val = val1.replace(/\s+/g, '')
  let reg = /^([0-9]|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/
  if (val && !reg.test(val)) {
    callback(new Error('输入的端口号不合法'))
  } else {
    callback()
  }
}

// input 验证非法字符
export const hasIllegalCharacters = (input) => {
  // 定义合法字符范围（这里只列举了部分常见的特殊字符）
  var legalChars = /^[a-zA-Z0-9_\u4e00-\u9fa5]+$/;
  
  if (legalChars.test(input)) {
      return false; // 不存在非法字符
  } else {
      return true; // 存在非法字符
  }
}